(function(){
	var _p = ns('util'),
			__pat = /\{([_\d\w]+)\}/g;
//
// string format
//
_p.format = function(_fmt) {
	var _args = arguments,
			_o = _args[_args.length - 1];

	if (typeof _o == 'object') {
		return _fmt.replace(__pat, function(_a, _b) {
			return _o[_b] || _args[1 + parseInt(_b)];
		});
	} else {
		return _fmt.replace(__pat, function(_a, _b) {
			return _args[1 + parseInt(_b)];
		});
	}
};
//
// extend js primitive type
//
Function.prototype.bind = function(_context) {
	var _self = this;
	return function() {
		var _args = arguments;
		_self.apply(_context, _args);
	}
}
})();
